既然 Star 可以刷,那我们如何判断一个开源项目的好坏?
喜欢就关注我们吧!
长久以来,很多人把一些开源社区的数据进行系统地收集,用于判断和评估一个开源项目的质量,包括项目的受欢迎程度、可靠性和活跃度等信息。但业内人士认为,这些评判标准其实都存在缺陷。
代码评判标准
在上个世纪 8、90 年代,人们常常用代码行数 LOC 来衡量一个软件项目的发展情况。
ZDNet 资深技术编辑 Steven J. Vaughan-Nichols 认为,统计每个月增长的代码行数虽然是一件很容易的事,但用它来评价一个项目的好坏却具有很强的误导性。
编程天才 Edsger Dijkstra 曾在 1988 年提出,LOC 给了人们 “一种令人安心的错觉”,用 “每月生产的代码行数” 来衡量 “程序员的生产力” 是很不明智的,因为这个标准忽略了程序员的创造性带来的更大价值,反而会鼓励人们编写没有意义的多余代码。
从那以后,比 LOC 更丰富的评判体系陆续出现,但新的问题也随之出现。
以 GitHub 上的 Star 为例。作为目前全球最大的开源 Git 仓库,GitHub 对 Star 功能的定位最初只是方便人们跟踪自己认为有趣的项目。
但如今许多开发者已经把 Star 数量当做衡量一个开源项目受欢迎程度和知名度的标准。简而言之,Star 越多,项目越好。但真的是这样吗?
被玩坏的 Star
Docker 的联合创始人 Solomon Hykes 曾表示,“GitHub 的 Star 就是个骗局,这种狗屁的衡量标准是如此的无孔不入,GitHub 对开源社区的扼制是如此的彻底,以至于维护者不得不扭曲自己的工作流程来适应‘GitHub 模式’,否则就有可能被行业分析师公开羞辱,真是耻辱。”
Hykes 并不是唯一反感这种评判标准的人。Gartner 高级总监 Fintan Ryan 称 “Github 的 Star 只是一场游戏,很多项目都在玩。”
微软负责 Azure 开源开发的项目经理 Ralph Squillace 在推特上说:“在我看来,对于微软的项目工程和管理来说,这些 Star 毫无价值。但却总有人抓住它们不放。”
去年 8 月,韩国最大的无线通讯服务商 SK Telecom 为了给旗下一个名为 Metatron Discovery 的实时数据分析项目(基于定制版本的 Apache Druid)刷星,推出了一个点亮 Star 赠送奖品的营销活动。
该活动使得项目一天就获得了 2500 多个 Star 。虽然最后 SK Telecom 公司迫于舆论压力将该项目下架,但刷星事件仍然带来了很大的负面影响。
此外,在国内某些电商平台甚至还出现了付费刷 Star 数量的产业链,使得这种简单直接的代码评价形式沦为了一些人包装自己的工具。
Star 难以体现的东西
这就是问题所在。Steven 指出,人们总是喜欢简单的指标,他们想要用快速、一目了然的方法找到能够解决他们问题的开源代码。但事实上,根本就没有这样简单的方法。
根据 Red Hat 公司最近的调查报告,有 95% 的企业 IT 领导者认为开源软件 “具有重要的战略意义”。
但是,在数以万计的开源项目中,要想找出哪些项目是至关重要的,哪些项目是你和你的团队真正需要的,并不是一件容易的事。仅仅依靠所谓的 Star 数或某一项参数的高低,难以做出正确的判断。
当然,我们可以很容易确定一些最重要的开源项目,比如 Apache、Firefox 和 Linux 这些家喻户晓的项目。
然而事实上,一些极其重要、使用率非常高的项目往往作为组件深藏在一些程序中。
在 2020 年的一项研究中,Linux 基金会的核心基础设施计划(CII)和哈佛大学创新科学实验室(LISH)发现,人们最常用的程序包括 Com.google.guava,Httpcomponents-core 和 Lodash 等几乎没人听过的组件。
为了找到这些组件,他们使用开发者安全公司 Snyk 和 Synopsys 网络安全研究中心的软件组成分析(SCA)工具,对数万个开源代码库进行了深入研究。
这是一项颇为复杂的工作,但却是确定哪些代码功能真正流行和经常被人使用的唯一方法。
如何准确评估一个开源项目
既然仅靠 Star 数很难完全判断一个项目的好坏,那我们如何全面准确地评估一个开源项目呢?Steven 列出了几个能够判断一个开源项目质量的角度,包括:
看该项目开发者的数量和质量。显然,一个项目拥有可观的开发者数量,且这些开发者都是当前领域的专家,那这个项目无疑是成功的。反之,该项目则很有可能在短期内失去维护,甚至停止更新。 该项目是否容易吸纳新的贡献者。包括项目源码是否容易获得,新的贡献者能否轻松参与项目贡献,项目维护者是否对外来贡献者持开放态度等等。这将决定该项目是否会在短期内改变开源协议甚至变成闭源软件。 项目在世界范围内的使用情况。根据权威的市场调查报告,判断项目在全球范围的使用人数。
例如 Netcraft 的 Web 服务器市场报告显示,自 2019 年 6 月以来,Nginx 已经取代更为知名的 Apache 成为部署最广泛的 Web 服务器。项目相关技术在业内的流行趋势。例如 4 年前人人都知道 Docker 容器是未来的发展趋势,却不知道如何对容器资源进行安排调度。
而如今人人都知道 Kubernetes 是容器编排领域的不二之选。你必须要知道你的领域里什么技术是热门,什么不是热门。
开源项目评估工具
2017 年 ,Linux 基金会成立了 CHAOSS 项目组,开始致力于为评估开源社区和项目发展情况提供量化指标。目前,CHAOSS 旗下已经有了两个开源的项目评估工具。 AugurAugur 是用于收集和评估有关自由与开源社区的结构化数据的工具,其核心宗旨是希望公开收集人们可以信任的数据,然后提供有用且定义明确的指标,以帮助人们通过这些数据指标全面了解一个开源项目的发展情况。项目组为此收集了大量的数据。目前主要的数据来源有 4 个:
Raw Git 提交日志(提交,贡献者) GitHub 的 API(问题,请求,贡献者,存储库元数据) Linux 基金会的 Core Infrastructure Initiative API(存储库元数据) 简洁的代码计数器,快速的 Sloc,Cloc 和 Code 工具,还可以执行 COCOMO 计算
参考链接: https://www.zdnet.com/article/how-to-judge-open-source-projects/ https://chaoss.community/
C++20 标准草案全票批准通过,越来越臃肿?Linux Mint 创始人:不会发布 GNOME/KDE 桌面环境,已与 StarLabs 接触法律要求,伊朗开源项目维护者拒绝合并以色列开发者的 PR年薪 50000 美元,D 语言基金会招聘开源社区工作人员音频慎入!枕边女友每天读论文哄我睡觉
觉得不错,请点个在看呀